package com.haonan.springboot_exercise.dao;

import com.haonan.springboot_exercise.bean.Email;
import com.haonan.springboot_exercise.bean.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author haonan
 * @date 2021/4/14 22:17
 **/
@Repository
public interface UserDao {
    /**
     * 通过用户名和密码，从数据库中取得该用户实体
     * @param user_name 用户名
     * @param user_password 密码
     * @return 该用户实体
     */
    public User getUserByMessage(@Param("user_name") String user_name, @Param("user_password") String user_password);

    /**
     * 返回用户列表（所有用户）
     * @return 所有用户实体的一个列表
     */
    public List<User> getAllUser();

    /**
     * 判断该用户能不能使用SMTP客户端
     * @param user_name
     * @return
     */
    public Boolean userCanSmtp(@Param("user_name") String user_name);

    /**
     * 判断该用户能不能使用POP客户端
     * @param user_name
     * @return
     */
    public Boolean userCanPop(@Param("user_name") String user_name);

    /**
     * 判断用户是否存在
     * @param user_name
     * @return
     */
    public Boolean userExists(@Param("user_name") String user_name);

    /**
     * 获取发件箱
     * @param user_name
     * @return List<Email>
     */
    public List<Email> getOutbox(@Param("user_name") String user_name);

    /**
     * 注册功能
     * @param user_name 用户名
     * @param user_password 密码
     */
    public void enroll(@Param("user_name") String user_name, @Param("user_password") String user_password);

    /**
     * 修改密码
     * @param user_name 用户名
     * @param old_user_password 旧密码
     * @param new_user_password 新密码
     */
    public void changePassword(@Param("user_name")String user_name, @Param("old_user_password") String old_user_password,@Param("new_user_password")String new_user_password);

    /**
     * 判断用户 用户名和密码是否正确
     * @param user_name
     * @param user_password
     * @return
     */
    public Boolean judgeUser(@Param("user_name") String user_name, @Param("user_password") String user_password);

}
